#include <iostream>
#include <Dictionnary.hh>

using namespace std;
using namespace Dict;

static void hello(Dictionnary_ptr e) {
    if (CORBA::is_nil(e)) {
        cerr << "hello: The object reference is nil!\n" << endl;
        return;
    }
    //CORBA::String_var src = (const char*) "Hello!";
    //CORBA::String_var dest = e->echoString(src);
    //cerr << "I said, \"" << (char*)src << "\"." << endl
    //    << "The Echo object replied, \"" << (char*)dest <<"\"." << endl;
    cout << "OK" << endl;
}

// Ajouter une nouvelle entité


// load

static void loadDict(const Dictionnary_ptr dict) {
    if (CORBA::is_nil(dict)) {
        cerr << "hello: The object reference is nil!\n" << endl;
        return;
    }
    dict->loadDict();
    return;
}

// save

static void saveDict(const Dictionnary_ptr dict) {
    dict->saveDict();
    return;
}

static void addEntity(const Dictionnary_ptr dict, const char* _term, const CategoryValue _cateroryValue, const PropertyType _property, const char* _def) {
    // Dictionnaire, terme, catégorie, propriété, définition
    if (CORBA::is_nil(dict)) {
        cerr << "addEntity: The object reference is nil!\n" << endl;
        return;
    }   
    dict->addEntity(_term, _cateroryValue, _property, _def);   
}

// Supprimer une entité

static void delEntity(const Dictionnary_ptr dict, const char* _term) {    
    dict->delEntity(_term);
}

// Modifiér

static void modifDefinition(const Dictionnary_ptr dict, const char* _term, const char* _newdef) {
    dict->modifDefinition(_term, _newdef);
    return;
}

// Trier discending

static void sortDescendingDict(const Dictionnary_ptr dict) {
    dict->sortDict(false);
    return;
}

// Trier ascending

static void sortAscendingDict(const Dictionnary_ptr dict) {    
    dict->sortDict(true);
    return;
}

// Prendre le nombre des mots du dictionnaire

static CORBA::ULong dictLength(const Dictionnary_ptr dict) {
    CORBA::ULong length = dict->dictLength();
    return length;
}
